package com.zysdev.opengldouyin1demo.filter

import android.content.Context
import android.opengl.GLSurfaceView
import android.util.AttributeSet

class CameraView : GLSurfaceView {

    private var renderer: CameraRender? = null

    constructor(context: Context?) : this(context, null)

    constructor(context: Context?, attrs: AttributeSet?) : super(context, attrs) {

        // 使用版本2的opengl
        setEGLContextClientVersion(2)

        renderer = CameraRender(this)

        setRenderer(renderer)

        /**
         * 注意必须在setRenderer 后面。
         * 刷新方式：
         *     RENDERMODE_WHEN_DIRTY 手动刷新，調用requestRender();
         *     RENDERMODE_CONTINUOUSLY 自動刷新，大概16ms自動回調一次onDrawFrame方法
         */
        renderMode = RENDERMODE_WHEN_DIRTY
    }


    private var mSpeed = Speed.MODE_NORMAL

    enum class Speed {
        MODE_EXTRA_SLOW, MODE_SLOW, MODE_NORMAL, MODE_FAST, MODE_EXTRA_FAST
    }

    fun setSpeed(speed: Speed) {
        mSpeed = speed
    }

    fun startRecord() {
        //速度  时间/速度 speed小于就是放慢 大于1就是加快
        var speed = 1f
        speed = when (mSpeed) {
            Speed.MODE_EXTRA_SLOW -> 0.3f
            Speed.MODE_SLOW -> 0.5f
            Speed.MODE_NORMAL -> 1f
            Speed.MODE_FAST -> 2f
            Speed.MODE_EXTRA_FAST -> 3f
        }
        renderer?.startRecord(speed)
    }

    fun stopRecord() {
        renderer?.stopRecord()
    }
}